Robots are electro-mechanical devices that are able to manipulate objects using a series of links, actuators, and end effectors. The links of a robot are typically interconnected via joints, each of which may be independently or interdependently driven by one or more joint actuators. Each joint represents an independent control variable or degree of freedom. End effectors are the particular devices used to perform a commanded work task sequence, such as grasping a work tool or stacking one component onto another.
Any modifications to an object handled by a robot in the execution of a given work task sequence typically requires expensive retraining of the robot. This may be true even if the surfaces of the grasped object do not change in a subsequent work task sequence. Similarly, changes to the positioning or orientation of an object in a robot's work environment as a result of error and/or relaxed operating conditions may require expensive retraining of the robot, whether via programming or manual retraining of the robot by back-driving of the joints and task demonstration. However, existing control software is not easily retooled to meet changing flexibility requirements.